------------------------------- Chapitre II - Quelques principes -------------------------------
Le nagscreen
La première chose dont nous ne voulons plus, c'est cet écran au démarrage, le nagscreen.
Lorsque Windows affiche une fenêtre à l'écran, c'est le résultat d'une suite de commandes. Le programme va :
Ce qui nous intéresse, c'est à quel moment notre nag apparait. On va donc utiliser l'API ShowWindow pour faire breaker Olly à ce moment-là.
On ouvre Olly, on charge notre cible (XTX-RegMe.exe) et on va lister les apis utilisées par notre programme. Pour faire cela, soit vous faîtes un clic droit dans le code puis Search for et Names, soit en étant dans le code vous utilisez la combinaison CTRL+N :
Ce qui nous donne cette fenêtre (pour trier les noms par ordre alphabétique, cliquez sur l'en-tête gris Name en haut de la colonne) :
On retrouve dans cette liste notre api ShowWindow. Clic droit après l'avoir sélectionnée, Find references et on obtient toutes les occurrences qui font appel à celle-ci :
On pose un BP avec F2 sur chaque call (ici on peut le faire manuellement avec F2 car les références
ne sont pas nombreuses, sinon : clic droit, Breakpoint on all commands), on lance la cible avec F9 (ou
). Olly breake et nous voyons clairement le processus de création d'une fenêtre :
Si vous regardez dans la partie création de la fenêtre, vous pouvez voir le titre (ce qui apparait dans la barre de titre en haut d'une fenêtre et dans la barre des taches) : XTX-RegMe, ce que nous avons lorsque le nagscreen s'affiche ainsi qu'un style : WS_POPUP . Ce style permet d'avoir une fenêtre sans bordure et sans barre de titre, ce qui correspond parfaitement. Tout nous indique que nous sommes au bon endroit.
Sur le côté, le crochet nous indique le départ et la fin de la procédure. Sélectionnez la ligne 40134Dh et saisissez un label (avec :) (1) et un commentaire (avec ;) (2) identiques : Nagscreen. (faire précéder les commentaires par => afin de les différencier de ceux d'Olly). Nous voulons maintenant savoir où se trouve le CALL qui nous a amené ici. Dans la partie information d'Olly, nous en avons un seul de noté (3) :
Clic droit sur la ligne d'information, Goto call 401C95 et on arrive ici :
Vu que c'est le seul endroit qui appelle la routine de création du nag, nous allons simplement remplacer le CALL par des NOP, comme nous l'avons fait au cours des exercices précédents. Pour ce faire, nous avions utilisé la boite de dialogue Assemble. Celle-ci est bien pratique si l'on veut modifier une instruction mais pour simplement "nopper" il y a plus rapide. Sélectionner la ligne du CALL, clic droit, Edit, Fill with NOPs :
et vous obtenez ceci :
Nous allons enregistrer nos modifications. Clic droit dans la partie grise, Edit, Copy to executable :
Une boite de dialogue s'affiche (afin de ne plus l'avoir la prochaine fois et de gagner un peu de temps, vous pouvez si vous le voulez cocher la case "Don't display this message in the future") :
Une nouvelle fenêtre s'ouvre, clic droit dans la partie sélectionnée, Save file :
Une nouvelle boite de dialogue nous demande encore si on veut sauver nos modifications ... Cliquez sur [Oui] :
On peut enfin enregistrer notre fichier modifié. Renommez-le en XTX-RegMe_NoNag.exe. Une fois fait, fermez Olly, démarrez le RegMe modifiée et là, plus de nag qui nous retarde l'ouverture. Objectif atteint !
On peut s'attaquer à la suite.